package juego;

import java.awt.Image;
import java.io.IOException;

import exceptions.EspejoException;
import graphic.ImageUtils;

/**
 * La clase EspejoSimple.
 * @author Daniel Goldberg, Maria Eugenia Cura.
 */
public class EspejoSimple extends Espejo{
	
	/**
	 * Inicializa un nuevo espejo simple.
	 * 
	 * @param rot La rotacion
	 * @param rojo
	 * @param verde
	 * @param azul
	 * 
	 * @throws EspejoException lanza una excepcion espejo exception
	 */
	public EspejoSimple(int rot, int rojo, int verde, int azul) throws EspejoException{
		if(!validarRotacion(rot))
			throw new EspejoException("El espejo simple tiene que tener rotacion entre 0 y 3.");
		super.rotacion=rot;
		if(rojo!=0 | verde!=0 | azul!=0)
			throw new EspejoException("El espejo simple tiene mal los colores.");
	}	
	
	/* (non-Javadoc)
	 * @see juego.Elemento#dibujar()
	 */
	@Override
	public Image dibujar() {
		Image img1, img2 = null;
		try {
			img1 = ImageUtils.loadImage("resources/simple-mirror.png");
			img2 = ImageUtils.rotateImage(img1, rotacion);
		} catch (IOException e) {
			System.out.println("Error al cargar la imagen.");			
		}
		return img2;
	}

	/* (non-Javadoc)
	 * @see juego.Espejo#rebotar(juego.Laser)
	 */
	@Override
	public boolean rebotar(Laser l1) {
		// TODO Auto-generated method stub
		return false;
	}

	/* (non-Javadoc)
	 * @see juego.Espejo#validarRotacion(int)
	 */
	public boolean validarRotacion(int rot){
		return (rot>=0 | rot<=3)?true:false;
	}
	
	/* (non-Javadoc)
	 * @see juego.Espejo#getReturn(int)
	 */
	@Override
	public int[] getReturn(int anterior) {
		int auxi[]= new int[3];
		auxi[0] = 2;
		auxi[1]=anterior<2?anterior+2:anterior-2;
		int aux = super.rotacion-1;
		aux=(aux<0)?aux+4:aux;
		
		if( anterior==super.rotacion ) //si tienen la misma rot
			auxi[2] = anterior==3 ? 0:anterior+1;
		else if( anterior==aux ) //si el anterior tiene un nro menos q el del espejo
			auxi[2] = anterior==0 ? 3:anterior-1;
		else //de otra forma
			auxi[2] = -1;
		return auxi;
	}	

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "/";
	}
	
	public String toStringGuardar(){
		return "3,"+ this.rotacion+",0,0,0";
	}

	/* (non-Javadoc)
	 * @see juego.Espejo#sumarRotacion()
	 */
	@Override
	public void sumarRotacion() {
		if (rotacion==3)
			rotacion=0;
		else
			rotacion++;
	}
}
